import java.math.BigDecimal;


public abstract class BigDecimalUtils {

    public static final BigDecimal HUNDRED = new BigDecimal("100");

    public static final BigDecimal THOUSAND = new BigDecimal("1000");

    public static final BigDecimal ten_thousand = new BigDecimal("10000");

    public static BigDecimal nullToZero(BigDecimal bigDecimal) {
        return bigDecimal == null ? BigDecimal.ZERO : bigDecimal;
    }

    public static BigDecimal add(BigDecimal... bigDecimals) {
        BigDecimal sum = BigDecimal.ZERO;
        for (BigDecimal bigDecimal : bigDecimals) {
            if (bigDecimal != null) {
                sum = sum.add(bigDecimal);
            }
        }
        return sum;
    }

    public static BigDecimal subtract(BigDecimal orig, BigDecimal... bigDecimals) {
        BigDecimal diff = nullToZero(orig);
        for (BigDecimal bigDecimal : bigDecimals) {
            if (bigDecimal != null) {
                diff = diff.subtract(bigDecimal);
            }
        }
        return diff;
    }

    public static BigDecimal multiply(BigDecimal... bigDecimals) {
        BigDecimal integration = BigDecimal.ONE;
        for (BigDecimal bigDecimal : bigDecimals) {
            if (bigDecimal != null) {
                integration = integration.multiply(bigDecimal);
                if (integration.compareTo(BigDecimal.ZERO) == 0) {
                    break;
                }
            }
        }
        return integration;
    }

    public static BigDecimal multiplyHundred(BigDecimal bigDecimal) {
        if (bigDecimal == null) {
            return null;
        }
        return bigDecimal.multiply(HUNDRED);
    }

    public static BigDecimal divideHundred(BigDecimal bigDecimal) {
        if (bigDecimal == null) {
            return null;
        }
        return bigDecimal.divide(HUNDRED);
    }

    public static BigDecimal max(BigDecimal... bigDecimals) {
        BigDecimal max = bigDecimals[0];
        for (int i = 1; i < bigDecimals.length; i++) {
            if (max.compareTo(bigDecimals[i]) < 0) {
                max = bigDecimals[i];
            }
        }
        return max;
    }

    public static BigDecimal min(BigDecimal... bigDecimals) {
        BigDecimal min = bigDecimals[0];
        for (int i = 1; i < bigDecimals.length; i++) {
            if (min.compareTo(bigDecimals[i]) > 0) {
                min = bigDecimals[i];
            }
        }
        return min;
    }
}